package com.daohang361.imqq.encoder;

import com.daohang361.imqq.Asycore.QQUser;
import com.daohang361.imqq.tool.ByteArray;
import com.daohang361.imqq.tool.MyByteSendArray;
import com.daohang361.imqq.tool.MyUtil;

import static org.apache.commons.codec.digest.DigestUtils.md5;

/** 
 * @author naner E-mail:likun3344@163.com 
 * @create time：2011-4-9 下午07:03:52 
 * @decript :    获取发送给好友回话的回话key
 */

/**
 *66 2B 4F EC[QQ号码：1714114540] 
 *15 C4 41 D0 [QQ号码：365183440]
 *00 00 00 00 
 *21 07 
 *66 2B 4F EC[QQ号码：1714114540] 
 *15 C4 41 D0[QQ号码：365183440]
 *D7 C9 C4 3E 69 7F 64 10 41 35 C8 D5 A4 5F A7 3E [key] md5(目标QQ号码+sessionkey)
 *00 AF 64 1A 
 *4D 9D D9 83 [ 时间：2011/4/7 23:34:27]
 *02 37
 *00 00 00 01
 */
public class EncoderCD extends AbstractEncoder {
	/**
	 * Object[from qq,targer qq ]
	 */
	@Override
	public byte[] encode(QQUser myqq, int c,Object...o) {
		ByteArray myByte = doHead(myqq, "00CD");
		myByte.saveThis();//保存此段作为第0段
		
		for (Object  x :o){   
			myByte.putInt((Integer)x);
			}   
		myByte.putHex("00 00 00 00 21 07");
		for (Object  x :o){   
			myByte.putInt((Integer)x);
			}  
		MyByteSendArray mysend=new MyByteSendArray();
		mysend.putByte(MyUtil.int2Bytes((Integer)o[0]));
		mysend.putHex(myqq.getSessionkey());
		myByte.putByte(md5( mysend.getByteList()));
		myByte.putHex("00 AF 64 1A");
		myByte.putHex(MyUtil.Get4HexTime());
		myByte.putHex("02 37");
		myByte.putHex("00 00 00 01");
		myByte.saveThis();//保存此段作为第一段
		myByte.teaThis(1, 1,myqq.getAttr("SessionKey"));//加密第一段到第一段
		doTail(myByte);
		return myByte.getByteList();//返回完整的package
	}
}
